<?php

class Metaevento extends Zend_Db_Table_Abstract
{

    protected $_name = 'metaevento';
    protected $_dependentTable = array('Eventos','Tarefas');
    protected $_referenceMap = array(
        'Responsavel' => array(
            'columns' => array('responsavel_id'),
            'refTableClass' => 'Usuarios',
            'refColumns' => array('id')
        ),
        'Moodle' => array(
            'columns' => array('mdl_curso_id'),
            'refTableClass' => 'mdlCursos',
            'refColumns' => array('id')
        ),
    );
    
    public function insert($data)
    {
        if(!$this->isUniqueName($data['metaevento'])){
            throw new Exception('Este metaevento já está cadastrado!');
        }
        else {
            $data['dt_criacao'] = date('Y-m-d H:i:s');
        }
        parent::insert($data);
    }
    
    public function delete($where)
    {
        $ciclos = new FabricaCiclos();
        $ciclos->excluirTodosCiclos($where);
        parent::delete($where);
    }

    public function isUniqueName($nome){
        $where = $this->getDefaultAdapter()->quoteInto('metaevento = ?', $nome);
        return (count($this->fetchAll($where)) == 0) ? true : false;
    }
    
    public static function getMetaeventos($where = null, $order = null)
    {
        $db        = Zend_Db_Table::getDefaultAdapter();
        $cols      = array('m.*');
        $metaevento   = array('m' => 'metaevento');
        $usuario   = array('u' => 'usuario');
        
        $select = $db->select()
                     ->from($metaevento, $cols)
                     ->joinLeft($usuario, 'u.id = m.responsavel_id',array('u.apelido as responsavel'));
        if($where){$select->where($where);}
        if($order){$select->order($order);}

        $result = $db->fetchAll($select);
        
        return $result;
        
    }
}